import java.util.List;


abstract public class Animal {
	    private boolean estVivant;
	    private Grille grille;
	    private Position position;
	    
	    public Animal(Grille grille, Position position){
	        estVivant = true;
	        this.grille = grille;
	        setPosition(position);
	    }
	    
      // Les actions d'un animal, redéfinie dans Loup et Mouton
	    abstract public void act(List <Animal> newAnimaaux); 

	    //@return Si l'animal est vivant ou pas
      protected boolean estVivant(){
	        return estVivant;
	    }

	    // Tue l'animal
      protected void setMort(){
	        estVivant = false;
	        if(position != null) {
	            grille.clear(position);
	            position = null;
	            grille = null;
	        }
	    }

	    //@return la position de l'animal
      protected Position getPosition(){
	        return position;
	    }
	    
	   //Définit position d'un animal
     protected void setPosition(Position newPosition){
	        if(position != null){
	            grille.clear(position);
	        }
	        position = newPosition;
	        grille.place(this, newPosition);
	    }
	    
	   //@return La grille associée à l'animal
     protected Grille getGrille(){
	        return grille;
	    }
	   
	  
}
